Inevitability Mechanisms for Software Transactional Memory
نویسندگان
چکیده
Transactional Memory simplifies parallel programming by eliminating the use of locks to protect concurrent accesses to shared memory. However, when locks are used to provide mutual exclusion for irreversible operations (I/O, syscalls, calls to “black box” libraries), their replacement with transactions seems problematic: transactions can abort and restart at any arbitrary point in their execution, which is unacceptable when operations performed during a transaction have made the intermediate state of that transaction visible to an outside agent. Permitting at most one transaction to operate in an “inevitable” mode, where it is guaranteed to commit, is widely accepted as a solution to the irreversibility problem for transactions, albeit one that is not expected to scale. In this paper we explore a variety of mechanisms to support inevitability in software transactional memory. We demonstrate that it is possible for an inevitable transaction to run in parallel with (non-conflicting) non-inevitable transactions, without introducing significant overhead in the non-inevitable case. Our mechanisms can also be used to improve the speed of certain common-case transactions.
منابع مشابه
Challenges to Providing Performance Isolation in Transactional Memories
Due to the inevitability of chip multiprocessors and the difficulty of parallel software development, there has been widespread interest in techniques that facilitate parallel programming. Recently, there have been a number of proposals regarding hardware support for transactional programming models. A key advantage of transactional programming models over lock-based synchronization is that two...
متن کاملDebugging with Transactional Memory
Transactional programming promises to substantially simplify the development of correct, scalable, and efficient concurrent programs. Designs for supporting transactional programming using transactional memory implemented in hardware, software, and a mixture of the two have emerged recently. To our knowledge, nobody has yet addressed issues involved with debugging programs executed using transa...
متن کاملDesigning a Distributed Software Transactional Memory System
Distributed systems are widely used in high performance computing for performing computationally extensive calculations. In programming terms, distributed systems have usually been exploited through the use of dedicated APIs such as OpenMP and MPI. With these programming models, synchronization is achieved using locks and barriers, and is complex to implement correctly. Transactional memory is ...
متن کاملSelf-tuning the parallelism degree in Parallel-Nested Software Transactional Memory
Transactional Memory is a promising parallel computing paradigm, increasingly used nowadays, that allows easy parallelization of sequential programs and can expose a great level of parallelism. Many different approaches exist. One such approach is parallel-nested Transactional Memory, where transactions are allowed to spawn their own child transactions, effectively exposing additional levels of...
متن کاملSTO Verification
Transactional memory is an appealing alternative to lock-based synchronization mechanisms. It provides in-memory operations with transaction abstraction analogous to database systems. Despite recent works on exploring different implementation strategies of software transactional memory, little attention has been paid to verify their correctness. In this work, We aim to verify in Coq the correct...
متن کامل